package utils;

import android.content.Context;
import android.content.SharedPreferences;

import config.AppConfig;
import interfaces.MyCallBack;

/**
 * Created by zhaoshengping on 2017/2/19.
 * sharePreference 的简单封装
 */

public class SharePHelper{
    private Context mContext;
    private SharedPreferences mSP;
    public SharePHelper(){}

    /**
     * 构造函数
     * @param context 上下文
     */
    public  SharePHelper(Context context) {
        this.mContext = context;

    }

    /**
     * 添加到默认的 sharePreference， 需要设定默认的 sharePreference 名称 AppConfig.DEFAULT_SHAREP_NAME
     * @param key
     * @param value
     */

    public void push (String key, String value) {
        String spName = AppConfig.DEFAULT_SHAREP_NAME;
        SharedPreferences sp = mContext.getSharedPreferences(spName,Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();
        editor.putString(key,value);
        editor.commit();
    }

    /**
     * 添加到指定的 sharePreference
     * @param key
     * @param value
     * @param spName sharePreference的名称，可以自定义
     */
    public void push (String key, String value, String spName) {
        SharedPreferences sp = mContext.getSharedPreferences(spName,Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();
        editor.putString(key,value);
        editor.commit();
    }
    /**
     * 添加到指定的 sharePreference
     * @param key
     * @param value
     * @param spName sharePreference的名称，可以自定义
     * @param callBack MyCallBack，成功添加sharePreference后的回调函数
     */
    public void push (String key, String value, String spName, MyCallBack callBack) {
        SharedPreferences sp = mContext.getSharedPreferences(spName,Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();
        editor.putString(key,value);
        editor.commit();
        callBack.callback();
    }

    /**
     * 获取默认 sharePreference 中某个key的值
     * @param key
     * @return 默认 sharePreference 中某个key的值
     */
    public String getValue (String key) {
        String spName = AppConfig.DEFAULT_SHAREP_NAME;
        SharedPreferences sp = mContext.getSharedPreferences(spName, Context.MODE_PRIVATE);
        return sp.getString(key,"");
    }

    /**
     * 获取指定 sharePreference 中某个key的值
     * @param key 键值
     * @param spName sharePreference 的名称
     * @return 指定 sharePreference中某个key的值
     */
    public String getValue (String key, String spName) {
        SharedPreferences sp = mContext.getSharedPreferences(spName, Context.MODE_PRIVATE);
        return sp.getString(key,"");
    }


    public SharedPreferences getInstance (String spName) {
        if (this.mSP == null) {
            this.mSP = mContext.getSharedPreferences(spName, Context.MODE_PRIVATE);
        }
        return this.mSP;
    }
}
